![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
whh_java菜鸟
这个作者很懒,什么都没留下…
展开
-
数据库存储加密-支持模糊搜索
需求:根据客户要求,将数据存储在数据库需要加密存储,并且不影响现有业务。之前想过aop处理数据进行代码层面加密。但是模糊搜索有一定困难。最后找到@ColumnTransformer注解来自定义sql 写的时候加密 查的时候解密。 由于中文用原来的解密会出现乱码问题。网上找了个解决方案 用cast(xx as char)可以解决乱码问题 @ColumnTransformer(forColumn = "name", write = "HEX(AES_ENCRYPT(?,原创 2021-01-22 09:05:27 · 867 阅读 · 0 评论 -
使用BigDecimal计算后数值变化的坑
BigDecimal得到一个需求,取一个值的百分比,精确到小数一位,用BigDecimal计算的时候发现精度不准,特此记录 public static void main(String[] args) { BigDecimal bigDecimal1 = new BigDecimal(79.44444444444); float floatValue1 = bi...原创 2020-03-20 15:42:29 · 1519 阅读 · 0 评论 -
获取resources下面的文件
getClass().getClassLoader().getResourceAsStream(“文件名称”)原创 2020-01-21 11:03:38 · 1234 阅读 · 0 评论 -
摘要认证
public static void main(String[] args) throws UnsupportedEncodingException { HttpClient httpClient = new HttpClient(); httpClient.getState().setCredentials(AuthScope.ANY,new Userna...原创 2019-12-02 09:39:38 · 407 阅读 · 1 评论 -
spring项目解决跨域问题
通过过滤器解决import org.springframework.stereotype.Component;import javax.servlet.*;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/** * @author whh * @date 2019/10/15 */...原创 2019-10-15 11:05:03 · 384 阅读 · 0 评论 -
windows将jar配成服务之-nssm篇
链接:https://pan.baidu.com/s/1CjYOPMxXLRW9cD-Gi9hX1Q提取码:99nd下载nssm软件然后在nssm目录执行nssm install命令 会弹出以下文字与窗口在path填上java路径,在Startup directory 填上jar包目录Arguments填上参数Service name 填上想要在windows服务列表生成的服务...原创 2019-10-15 09:38:21 · 1096 阅读 · 0 评论 -
spring工厂模式创建对象
@Componentpublic class NewBeanFactory implements FactoryBean<NewBeanWrapper> { @Override public NewBeanWrapper getObject() throws Exception { NewBeanWrapper newBeanWrapper = new...原创 2019-06-23 22:26:49 · 545 阅读 · 0 评论 -
文件读取->文件输出
FileInputStream fileInputStream = new FileInputStream(new File("输入目录")); FileOutputStream fileOutputStream = new FileOutputStream(new File("输出目录")); byte[] bytes = new byte[fil...原创 2019-06-23 22:36:46 · 193 阅读 · 0 评论 -
gradle 引用包的各个参数
gradle3.x vs 2.x2.x3.x无implementationcompileapiprovidedcompileOnlyapkruntimeOnlydebugCompiledebugImplementationreleaseCompilereleaseImplementationandroidTestCompile...原创 2019-06-23 22:57:10 · 972 阅读 · 0 评论 -
mac安装gradle并配置环境变量
https://gradle.org/install/#manually 先去官网下载gradle并安装(需要依赖JVM 所以先安装好jdk)然后进入~目录cd ~创建.bash_profile文件 并编辑配置相关属性vim .bash_profileexport GRADLE_HOME=opt/gradle/gradle-5.4.1/binexport PATH=$PATH: $G...原创 2019-06-23 23:20:16 · 2572 阅读 · 0 评论 -
linux时区不正确-导致bug
linux时区不正确-导致bug原创 2019-07-17 22:19:59 · 360 阅读 · 0 评论 -
openJDK与oracleJDK输出的nio包下的对象类型不同导致bug
openJDK与oracleJDK输出的nio包下的对象类型不同导致bug原创 2019-07-17 22:20:47 · 312 阅读 · 0 评论 -
HashMap源码简单研究
阿里的规范老是提醒new HashMap() 需要给括号内设值。看了下源码,设了值会给指定初始的内部节点长度。不设值,map的size>12时会扩容一次,24 36,以此类推都会扩容以此。12的值= 16 * 0.75 16为默认初始值,0.75为加载因子new HashMap(16,0.9F) 为设置了16的初始值与0.9的加载因子。当map.size> 16*0.9...原创 2019-07-24 22:03:31 · 76 阅读 · 0 评论 -
ConcurrentHashMap源码简略研究
常常说多线程情况下要用ConcurrentHashMap来保障线程安全。之前隐约记得synchronized关键字保证了线程安全。具体没有看是哪里使用。今天看了下源码,用的地方主要在两处put() remove()put方法与remove方法里面又使用了putVal与replaceNode里面涉及树与链表相关的内容,比较复杂,我没去细究。反正就是putVal与replaceNode方...原创 2019-07-24 22:33:56 · 59 阅读 · 0 评论 -
基于docker搭建RocketMQ
最近项目很有可能要用到RocketMQ,就先尝试着自己玩玩。docker pull styletang/rocketmq-console-ng# 使用docker下载mq镜像docker images 确认镜像已经下载docker run -e "JAVA_OPTS=-Drocketmq.config.namesrvAddr=127.0.0.1:9876 -D" -p 8080:8080...原创 2019-07-24 23:43:54 · 269 阅读 · 0 评论 -
linux下导出堆栈信息
问题场景:发现一个问题,需要检查线上线程信息jsp -l 展示所有进程top -Hp [pid] 展示该进程所有线程jstack -m [pid] > 文件目录 保存该进程下的jstack文件jmap -dump:format=b,file=文件路径/文件名 [pid] 保存该进程下的dump文件...原创 2019-09-20 16:39:24 · 3311 阅读 · 0 评论 -
springboot内部tomcat的配置
server: port: 8081 tomcat: accesslog: buffered: true # 缓存 directory: /Users/huihaiwang/Desktop/demo/demo/out/logs # log 目录 enabled: true # 是否开启access log file-date-form...原创 2019-06-23 22:07:10 · 867 阅读 · 0 评论 -
CountDownLatch的简单应用
public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException { System.out.println("点了2个菜"); CountDownLatch countDownLatch = new CountDownLat...原创 2019-06-12 00:26:20 · 107 阅读 · 0 评论 -
lambda简单理解
一些JDK提供的函数式接口JDK 7 已经提供的一些接口java.lang.Runnable ==> void run();java.util.concurrent.Callable ==> V call() throws Exception;java.security.PrivilegedAction ==> T run();java.util.Compara...原创 2019-03-15 11:18:42 · 567 阅读 · 0 评论 -
gradle配置不缓存,快照模式,每次有新的jar包直接替换
configurations { all { exclude module: "junit"// 默认24小时 这样配置jar包会直接去配置的仓库拿 resolutionStrategy.cacheChangingModulesFor 0, 'seconds' } compile.e...原创 2019-03-19 17:56:16 · 2953 阅读 · 1 评论 -
Dozer简单入门
maven引入依赖 <dependency> <groupId>net.sf.dozer</groupId> <artifactId>dozer</artifactId> <version>5.2.1</version></d原创 2019-03-15 16:57:46 · 194 阅读 · 0 评论 -
springboot与rabbitmq结合
spring: rabbitmq: username: guest #默认账号 port: 5672 #默认端口 password: guest #密码 host: 127.0.0.1 #主机地址 virtual-host: / #虚拟路径 publisher-returns: true #exchange到queue失败,则回调retur...原创 2019-03-12 15:44:32 · 123 阅读 · 0 评论 -
springboot整合redis快速入门
application.yml配置文件spring: redis: port: 6379 #端口 host: localhost #ip database: 0 #库 一共·16个 0-15config文件 配置了之后不会乱码@Configurationpublic class RedisConfigurtion { @Autowired...原创 2019-03-21 11:02:47 · 348 阅读 · 0 评论 -
spring-data-jpa配置策略-自动生成创建修改时间与用户信息
pom依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId>...原创 2019-03-21 11:14:28 · 1494 阅读 · 0 评论 -
application.properties的rabbitmq配置属性
属性名称说明默认值spring.rabbitmq.address客户端连接的地址,有多个的时候使用逗号分隔,该地址可以是IP与Port的结合spring.rabbitmq.cache.channel.checkout-timeout当缓存已满时,获取Channel的等待时间,单位为毫秒spring.rabbitmq.cache.channel.size缓...原创 2019-03-13 09:59:36 · 3215 阅读 · 0 评论 -
RestTemplate快速入门
记录一次源码研究// 案例@Controller@RequestMapping("api")public class Api { @Autowired private RestTemplate restTemplate; @GetMapping("login") public Object login(@RequestParam("username")S...原创 2019-03-18 21:20:39 · 504 阅读 · 0 评论 -
Springboot + Junit5初探窥镜
import org.junit.jupiter.api.*;import org.junit.jupiter.api.extension.ExtendWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit.jupiter.Sp...原创 2019-03-22 14:50:12 · 1019 阅读 · 0 评论 -
shiro的坑
ShiroConfiguration配置类无法注入是spring的bean最后发现LifecycleBeanPostProcessor实现了BeanPostProcessor的子类,会导致spring相关的注入无法注入。解决方案为在该方法加个静态关键词@Bean(name = "lifecycleBeanPostProcessor") public static LifecycleB...原创 2019-04-09 17:44:37 · 334 阅读 · 0 评论 -
文件夹监听与文件监听--FileAlterationListenerAdaptor
import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;import org.apache.commons.io.monitor.FileAlterationObserver;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.spr...原创 2019-04-19 10:49:25 · 3736 阅读 · 0 评论 -
date小坑
Date date = new Date(1990, 2, 29);得到的时间是3890年3月29日,原因是内部方法会将年增加1900 ,月是从0开始到11去匹配所以正确的是Date date = new Date(1990-1900, 2-1, 29);在1.1版本就开始不推荐了 推荐用Calendar.set(year, month, date)Calendar date = ...原创 2019-04-30 12:50:54 · 180 阅读 · 0 评论 -
使用shiro前后端分离时,获取不到session
前端必须要在ajax请求里加上xhrFields: {withCredentials: true}, crossDomain: true。$.ajax({ url: xxx/xxx // 将XHR对象的withCredentials设为true xhrFields: { withCredentials: true }, crossDomain: true...原创 2019-04-30 12:56:50 · 3218 阅读 · 0 评论 -
用RestTemplate发送MultipartFile为参数的请求
```@AutowiredRestTemplate restTemplate;@PostMapping("/send")public TopicFileResponse send(String url,String path) { HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.par...原创 2019-06-13 09:54:19 · 19691 阅读 · 2 评论 -
application配置好的参数value(${xx.xx})不生效原因
配置了两个配置文件 加载了另外一个配置文件原创 2019-06-14 09:50:35 · 833 阅读 · 0 评论 -
Future的简单应用,异步通知
自己做了个简单的小例子 可以用于回调通知之类的 public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException { System.out.println("点了1个菜"); MyFuture myFuture = ...原创 2019-06-12 00:14:17 · 288 阅读 · 0 评论 -
volatile与synchronized修饰变量的区别
synchronized和volatile的区别:一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。2)禁止进行指令重排序。volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;sy...原创 2018-12-20 20:54:31 · 1924 阅读 · 3 评论