我正在使用 Spring Boot 构建休息 Web 服务。身份验证是使用 Spring Security 和 OAuth2 实现的。用户通过 LDAP 服务器进行身份验证。这是我的 websecurityconfig
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private RestAuthenticationSuccessHandler authenticationSuccessHandler;
@Autowired
private RestAuthenticationEntryPoint restAuthenticationEntryPoint;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.httpBasic()
.and()
.csrf().disable()
.sessionManagement().sessionCreationPolicy(
SessionCreationPolicy.STATELESS)
.and()
.exceptionHandling()
.authenticationEntryPoint(restAuthenticationEntryPoint)
.and()
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/login").permitAll()
.antMatchers("/logout").permitAll()
.antMatchers("/ristore/**").authenticated()
.anyRequest().authenticated()
.and()
.formLogin()
.successHandler(authenticationSuccessHandler)
.failureHandler(new SimpleUrlAuthenticationFailureHandler());
}
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
@Bean
public RestAuthenticationSuccessHandler mySuccessHandler(){
return new RestAuthenticationSuccessHandler();
}
@Bean …Run Code Online (Sandbox Code Playgroud) rest access-token oauth-2.0 spring-security-ldap spring-boot
我在我的分支上工作,称为"角色".远程主站正在频繁更新.所以在我将更改提交到远程分支后,我需要在最新的master上重新分支.所以这是我的步骤:
# from local
git add .
git commit 'Add feature'
git push origin role
# rebase
git pull --rebase origin master
Run Code Online (Sandbox Code Playgroud)
rebase是否仅影响本地分支或远程分支或两者?如果只有本地分支重新定位,我应该在rebase之后再次承诺原点吗?
我们在 RDS 中设置了一个 Postgres 数据库。我编写了一些 API 来使用 Spring Boot 处理对数据库的数据摄取。最近我发现很多连接在调用 API 后仍然保持会话活动。一些会议可以追溯到 3 个月前。
我想知道是否有办法在一段时间不活动后自动关闭这些连接。从如何自动关闭 PostgreSQL 中的空闲连接?, 看起来我可以设置一个 cron 作业来查找带有 SQL 查询的死连接并用pg_trminate_backend. 这是最好的选择吗?web应用层有什么可以做的吗?或者也许是一些 RDS 参数?在这方面需要一些建议。
我们不久前在 AWS 上设置了 Web 服务和数据库,应用程序现已投入生产。由于某种原因,我们需要终止旧的 AWS 并将所有内容转移到新创建的 AWS 帐户下。应用程序和所有基础设施都非常简单。但对于数据来说,这比较棘手。当前的数据库每天仍在接收大量数据。因此,最好在关闭旧应用程序并切换到新平台后迁移数据。
源 RDS 和目标 RDS 都是 Postgres。我们有大约 40GB 的数据要传输。我能想到三种方法,它们都有缺点。
serial(自动增量)。导出的 csv 的行 ID 可能与新 RDS 表中的现有数据冲突。我想知道是否有更好的方法来做到这一点。也许AWS有一些ETL工具可以点对点直接传输,而不需要使用本地计算机作为中间点。
postgresql etl data-migration amazon-web-services amazon-rds
我正在使用 Sagemaker 来训练和部署我的机器学习模型。至于预测,它将由 lambda 函数作为预定作业(每小时)执行。过程如下:
根据我的发现,通常输入将来自 lambda 有效载荷
data = json.loads(json.dumps(event))
payload = data['data']
print(payload)
response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
ContentType='text/csv',
Body=payload)
Run Code Online (Sandbox Code Playgroud)
或从 s3 文件中读取: my_bucket = resource.Bucket('pred_data') #将其替换为您的 s3 存储桶名称。
obj = client.get_object(Bucket=my_bucket, Key='foo.csv')
lines= obj['Body'].read().decode('utf-8').splitlines()
reader = csv.reader(lines)
file = io.StringIO(lines)
response = runtime.invoke_endpoint(EndpointName=ENDPOINT,
ContentType='*/*',
Body = file.getvalue(),
Body=payload)
output = response['Body'].read().decode('utf-8')
Run Code Online (Sandbox Code Playgroud)
由于我将从 s3 中提取原始数据并进行预处理,pandas因此将生成一个数据帧。是否可以直接将其作为 的输入invoke_endpoint?我可以上传的数据集中汇总到另一个S3存储,但它必须要经过decoding,csv.reader,StringIO和一切就像我发现还是有一个简单的方法来做到这一点的例子吗?这decode一步真的需要得到输出吗?
我想在使用命令运行maven release plugin时跳过集成测试
mvn -B -DskipITs release:prepare release:perform
Run Code Online (Sandbox Code Playgroud)
它似乎没有这种方式.相同的选项-DskipITs适用于mvn install/deploy.我不想使用,-Dmaven.test.skip=true因为只需要忽略集成测试,而不是单元测试.完成此任务的最佳方法是什么?
编辑:
-Darguments=-DskipITs工程release:prepare,但令人惊讶它确实不进行工作release:perform.试过-Darguments=-Dmaven.test.skip=true,也不起作用.
试图<arguments>skipITs</arguments>在pom中添加发布插件,但它会忽略-Darguments命令行中提供的所有其他插件.我不能在插件配置中配置所有内容,因为有些选项会动态获取环境变量.
我正在尝试使用 AWS Elastic Beanstalk 部署 Spring Boot 应用程序。我没有使用环境的默认设置,而是修改了“VPC”下的某些内容。在为 VPC 选择可用区域和安全组之一后,我创建了环境。

但是,当我在创建实例后查看实例详细信息时,我注意到它与两个安全组相关联。除了我选择的安全组之外sg-98c031f3,它还有另一个新生成的安全组sg-72b94919。
当我只选择一个安全组时,为什么它会为环境创建两个安全组?有没有办法删除其中一个,因为一个安全组足以处理所有规则。
amazon-web-services amazon-vpc amazon-elastic-beanstalk aws-security-group
我正在编写一个应用程序来获取发布到 Redis 中的通道的消息并处理它们。这是一个长期存在的应用程序,基本上从不监听频道。
def msg_handler():
r = redis.client.StrictRedis(host='localhost', port=6379, db=0)
sub = r.pubsub()
sub.subscribe(settings.REDIS_CHANNEL)
while True:
msg = sub.get_message()
if msg:
if msg['type'] == 'message':
print(msg)
def main():
for i in range(3):
t = threading.Thread(target=msg_handler, name='worker-%s' % i)
print('thread {}'.format(i))
t.setDaemon(True)
t.start()
while True:
print('Waiting')
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
当我运行该程序时,我注意到它没有获取在程序启动之前发布到通道的消息。在应用程序订阅频道后,可以很好地获取发送到频道的消息。
在生产中,很可能在程序开始之前通道中存在一些消息。有没有办法获取这些旧消息?
我想用Python编写一个函数.给定一个函数,返回一个新函数,该函数向后运行带有参数的原始函数.例如,输入函数func是pow,所以func(2,3)= 8.返回的新函数将执行pow(3,2)= 9.
我在另一篇文章中找到了此解决方案
def flip(func):
'Create a new function from the original with the arguments reversed'
@wraps(func)
def newfunc(*args):
return func(*args[::-1])
return newfunc
Run Code Online (Sandbox Code Playgroud)
有没有办法没有@wrap?参数的数量是未知的.它可以是任何类型:int, string. 所以我想要的函数只接受一个参数,它是原始函数的名称.
reverse_args(f)
Run Code Online (Sandbox Code Playgroud)
在调用时,*args将遵循:
reverse_args(func)(*args)
Run Code Online (Sandbox Code Playgroud) postgresql ×3
amazon-rds ×2
python ×2
spring-boot ×2
access-token ×1
amazon-vpc ×1
args ×1
branch ×1
decorator ×1
etl ×1
function ×1
git ×1
inference ×1
java ×1
lambda ×1
maven ×1
oauth-2.0 ×1
pandas ×1
rebase ×1
redis ×1
rest ×1
vacuum ×1