2020年3月22日

摘要: 1、批量插入数据到Oracle,使用preparedStatement执行实现 2、JDBC实现批量插入数据 3、在hibernate中实现批量插入数据 4、在mybatis中<insert>标签内对插入的值采用foreach循环 阅读全文
posted @ 2020-03-22 17:28 黑子菜园 阅读(191) 评论(0) 推荐(0)

2020年3月19日

摘要: sqlserver中: Oracle MySQL: 阅读全文
posted @ 2020-03-19 17:27 黑子菜园 阅读(139) 评论(0) 推荐(0)
摘要: 1、CountDownLatch 等待多线程完成 它的构造函数接收一个int参数作为计数器,想等待N个点,就传入N。 当调用CountDownLatch的countDown()方法时,N就会减1,直至减为0。 使用await()方法等待,当N的值变为0时,执行await的线程继续执行 2、Cycli 阅读全文
posted @ 2020-03-19 11:02 黑子菜园 阅读(162) 评论(0) 推荐(0)
摘要: 精简表达: 通过BeanDefinition获取bean的定义信息。 调用构造函数实例化bean。 进行bean的依赖注入,例如通过setter方法或@Autowired注解。 处理实现了Aware接口的bean。 执行BeanPostProcessor的前置处理器。 调用初始化方法,如实现了Ini 阅读全文
posted @ 2020-03-19 10:19 黑子菜园 阅读(176) 评论(0) 推荐(0)
摘要: 1、要排序的对象类实现Comparable<>接口,重写compareTo()方法 2、使用Comparator匿名内部类实现 1、Class Student implements Comparable<Student >{ //Student 类自己的成员变量(属性),及构造方法 @Overrid 阅读全文
posted @ 2020-03-19 10:03 黑子菜园 阅读(488) 评论(0) 推荐(0)

2020年3月16日

摘要: 线程的生命周期:新建、就绪、运行、阻塞、死亡 1、实现线程是继承Thread类好,还是实现Runnable接口好? 由于类不支持多重继承,如果要继承其他类,最好是实现线程用Runnable 2、Thread类的start()方法和run()方法的区别 start被用来启动新创建的线程,内部调用了ru 阅读全文
posted @ 2020-03-16 17:23 黑子菜园 阅读(105) 评论(0) 推荐(0)

2020年3月14日

摘要: spring的线程池技术使用的是ThreadPoolTaskExecutor,当我们点进ThreadPoolTaskExecutor这个类的时候,可以看见里面是对于JDK中的ThreadPoolExecutor的封装: 1、为什么要使用线程池? 创建和销毁线程的花销是很大的,处理时间可能比处理业务的 阅读全文
posted @ 2020-03-14 16:17 黑子菜园 阅读(208) 评论(0) 推荐(0)

2020年3月12日

摘要: 一、事务的四大特性:ACID 原子性:强调事务的不可分割 一致性:强调事务的执行前后,数据库完整性保持一致 隔离性:强调事务的并发访问,一个事务的执行不应该受到另一个事务的打扰 持久性:强调事务结束后,数据就永久保存在数据库中 二、事务的隔离级别:四种,读未提交、读已提交、可重复读、串行化 1、读未 阅读全文
posted @ 2020-03-12 18:37 黑子菜园 阅读(3001) 评论(0) 推荐(1)

2020年3月11日

摘要: 业务场景:需要实现一个支持并发的计数功能 1、计数功能的基本实现是: public class Increment{ private int count = 0; public void add(){ count++; } } 2、以上实现在并发环境下是不安全的,故修改方案1是加锁synchroni 阅读全文
posted @ 2020-03-11 16:59 黑子菜园 阅读(831) 评论(0) 推荐(0)

2020年2月29日

摘要: 或者: 消息队列满了以后该怎么处理? 或者: 几百万消息持续积压几小时,怎么解决? 问题本质是消费端出问题了,不消费或者消费慢。 1、消费端出问题了,大量消息积压在kafka里几个小时,怎么办? 正常思路是:修复consumer的问题,让他恢复消费,然后傻等几个小时消费完毕(不可取,用户等不了) 实 阅读全文
posted @ 2020-02-29 23:59 黑子菜园 阅读(2084) 评论(1) 推荐(1)
摘要: 或者:如何保证从消息队列里拿到的数据按顺序执行? 解决方案的关键是在消费者消费之前,将有相关性的数据按顺序写入同一个队列(queue或者是内存队列) 1、rabbitMQ 中,有个默认是数据1进入一个queue并且只会被一个消费者消费 场景:(1queue对多consumer)三个消息按顺序写进了1 阅读全文
posted @ 2020-02-29 23:58 黑子菜园 阅读(2276) 评论(0) 推荐(0)

2020年2月28日

摘要: 丢消息的情况有多种,可能是生产者丢了,可能是MQ丢了,可能是消费者丢了。 1、rabbitMQ 一般是用来承载核心业务的,数据是绝对不能丢的。解决方案的核心是接收消息方给发送消息方返回ack 一句话总结:生产者开启confirm模式 + MQ持久化消息 + 消费者关闭autoAck,手动提交 ack 阅读全文
posted @ 2020-02-28 17:07 黑子菜园 阅读(437) 评论(0) 推荐(0)
摘要: 消息重复消费,会造成数据混乱,特别是在涉及消费和财务系统里,此问题的解决显得尤为重要。 以kafka为例 关键字:消费端自动提交offset;写库或者redis时,先去查一下主键、key等是否存在 上图中,最顶上的文本框丢失的文字:并通知kafka当前最大offset; 最右边的文本框丢失的文字:数 阅读全文
posted @ 2020-02-28 15:54 黑子菜园 阅读(874) 评论(0) 推荐(0)

2020年2月25日

摘要: 保证MQ的高可用性,主要是解决MQ的缺点--系统复杂性变高--带来的问题 主要说一下 rabbitMQ 和 kafka 的高可用性 一、rabbitMQ的高可用性 rabbitMQ是基于主从做高可用性的,主要有三种模式:单机模式(不推荐)、普通集群模式(不推荐)、镜像集群模式(推荐) 1、单机模式: 阅读全文
posted @ 2020-02-25 22:09 黑子菜园 阅读(1436) 评论(0) 推荐(0)
摘要: 1、Builder模式:例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder 2、工厂模式:例如SqlSessionFactory、ObjectFactory、Map 阅读全文
posted @ 2020-02-25 22:05 黑子菜园 阅读(1865) 评论(0) 推荐(0)

2020年2月24日

摘要: 注:前提是知道什么是消息队列。不懂的去搜索各种消息队列入门(activeMQ、rabbitMQ、rocketMQ、kafka) 1、为什么要使用MQ?(MQ的好处:解耦、异步、削峰) (1)解耦:主要解决系统间的耦合度 场景是系统A会产生用户ID:userId,要把userId通过调用系统B\C\D 阅读全文
posted @ 2020-02-24 21:33 黑子菜园 阅读(2208) 评论(0) 推荐(0)

2020年2月17日

摘要: Spring的常见注解包括: 声明Bean的注解:@Component、@Service、@Repository、@Controller。 依赖注入相关注解:@Autowired、@Qualifier、@Resource。 设置作用域的注解:@Scope。 配置相关注解:@Configuration 阅读全文
posted @ 2020-02-17 16:25 黑子菜园 阅读(211) 评论(0) 推荐(0)
摘要: springMVC 1、是基于Servlet的一个MVC框架(DispatcherServlet、ModelAndView、ViewResolver),解决web开发问题 缺点是 :配置复杂 要简化使用,才应运而生的springBoot:约定优于配置 springMVC解决的问题是网站应用程序/服务 阅读全文
posted @ 2020-02-17 15:40 黑子菜园 阅读(822) 评论(0) 推荐(0)
摘要: 1、IOC 控制反转:由spring来控制对象的生命周期和对象之间的关系 依赖注入 DI :(1)组件之间的依赖关系由容器在运行期决定,动态的将某种依赖关系注入到组件中去 (2)通过反射机制实现 优点是: 降低了组件之间的耦合(例如组件A需要创建组件B,由spring注入到A中去,而不是A自己创建) 阅读全文
posted @ 2020-02-17 15:21 黑子菜园 阅读(127) 评论(0) 推荐(0)

2020年2月16日

摘要: 1、同步代码块 synchronized (锁对象) { xxx } 2、同步方法 public synchronized void method() { xxx } 3、静态同步方法 public synchronized static void method(){ xxx } 阅读全文
posted @ 2020-02-16 20:45 黑子菜园 阅读(870) 评论(0) 推荐(0)
摘要: 一、redis是用C语言开发的一个开源的高性能键值对内存数据库,可用作数据库、缓存、消息代理: 性能优秀,读写速度非常快;线程安全;丰富的数据类型;支持数据持久化; 高性能:执行耗时久且结果不经常变动的sql,将结果放进缓存,查询时间短。 经典场景是:电商平台,某个产品一天之内信息都不变,但每次查询 阅读全文
posted @ 2020-02-16 18:05 黑子菜园 阅读(175) 评论(0) 推荐(1)
摘要: 在随笔“springMVC项目配置文件”的基础上,进行优化,使用注解配置,控制器类得以简化: 一、注解配置springMVC 1、在HelloController类中,去除实现的Controller接口,并给方法HandlerRequest添加注解@RequestMapping: @Controll 阅读全文
posted @ 2020-02-16 16:36 黑子菜园 阅读(164) 评论(0) 推荐(0)

2020年2月15日

摘要: 问题描述: MYSQL采用limit进行翻页查询时,搭配order by ,在翻到第二页的时候可能会出现第一页的数据, 示例sql如下: select a,b from c where d = 'xxx' order by e desc limit 5,5 使用上述sql查询的时候,可能出现和lim 阅读全文
posted @ 2020-02-15 16:43 黑子菜园 阅读(971) 评论(0) 推荐(0)

2020年2月14日

摘要: //以上个随笔(springMVC项目配置文件)为基础,详述springMVC请求的整个过程流向 web.xml dispatcher-Servlet.xml 用户请求 --> 经DispatcherServlet拦截并分发到对应的控制器 > 由配置,/hello会进入HelloController 阅读全文
posted @ 2020-02-14 20:29 黑子菜园 阅读(662) 评论(0) 推荐(0)
摘要: 一、springMVC项目配置文件 1、web.xml文件全局配置 <servlet> <servlet-name> dispatcher </servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServle 阅读全文
posted @ 2020-02-14 17:50 黑子菜园 阅读(1107) 评论(0) 推荐(0)
摘要: 一、springMVC三大组件 处理器映射器 RequestMappingHandlerMapping 处理器适配器 RequestMappingHandlerAdapter 视图解析器 InternalResourceViewResolver 二、1、spring主要jar包: spring-co 阅读全文
posted @ 2020-02-14 16:47 黑子菜园 阅读(859) 评论(0) 推荐(0)

2020年2月13日

摘要: 懒汉、饿汉、双重校验锁 1、懒汉:需要时才会去创建 public Class Singleton{ private static Singleton instance = null; private Singleton(){} public static synchronized Singleton 阅读全文
posted @ 2020-02-13 20:09 黑子菜园 阅读(587) 评论(0) 推荐(0)
摘要: 1、JDBC所需的四个参数username、password、url、driverClass 2、加载JDBC驱动程序 3、创建数据库连接connection对象conn 4、创建preparedStatement 5、执行sql语句 6、遍历结果集 7、处理异常,关闭JDBC对象资源 详细内容: 阅读全文
posted @ 2020-02-13 18:00 黑子菜园 阅读(1791) 评论(0) 推荐(0)
摘要: 1、ConcurrentHashMap原理和技术,size方法的实现? java1.7 >采用Segment +HashEntry +ReentrantLock实现,是用的分段锁: 提供了一个segment数组,在初始化ConcurrentHashMap 的时候可以指定数组的长度,默认是16,一旦初 阅读全文
posted @ 2020-02-13 17:06 黑子菜园 阅读(150) 评论(0) 推荐(0)
摘要: 1、事务的ACID性: (1)原子性:要么做,要么都不做。程序操作执行未成功,则所做的更改会被撤销; (2)一致性:比如转账,a转给b一百元,则a的账户少100,b的账户多100,前后数据要一致; (3)隔离性:由数据库锁实现。事务的隔离级别有4种:未提交读、提交读、可重复读、串行化; (4)持久性 阅读全文
posted @ 2020-02-13 15:56 黑子菜园 阅读(112) 评论(0) 推荐(0)

2018年4月25日

摘要: 1、mybatis是支持普通SQL查询、存储过程、和高级映射的优秀持久层框架 它消除了JDBC代码和参数的手工设置,以及对结果集的检索 2、mybatis使用简单的XML或注解用于配置和原始映射,将接口和java的POJO映射成数据库中的记录 3、mybatis的结果集是通过反射来实现的,并不是通过 阅读全文
posted @ 2018-04-25 11:02 黑子菜园 阅读(144) 评论(0) 推荐(0)

2018年4月24日

摘要: 1、创建线程的 4 种方式: (1)创建Thread类的子类,重写run方法 class Thread1 extends Thread{ public void run(){ 重写方法体 } } 在main方法中: Thread1 t1 = new Thread1 (); t1.start(); ( 阅读全文
posted @ 2018-04-24 11:44 黑子菜园 阅读(183) 评论(0) 推荐(0)

2018年4月11日

摘要: 注:文摘自网络,仅供自己参考 阅读全文
posted @ 2018-04-11 15:13 黑子菜园 阅读(665) 评论(0) 推荐(0)

2018年4月10日

摘要: public class printoutFile { public static void main(String[] args) { printFile(new File("D:\\test"),1); } public static void printFile(File file,int s 阅读全文
posted @ 2018-04-10 17:56 黑子菜园 阅读(738) 评论(0) 推荐(0)

2018年4月3日

摘要: 1、在Git上创建仓库,添加成员,默认分支是“master”,仓库路径假设为http://192.168.1.1/root/project.git 2、在sourceTree上,点击“克隆”,输入上面的url地址(过程中会弹窗要求输入密码)。将新建的仓库克隆到本地 3、在本地仓库内建一个你的项目名称 阅读全文
posted @ 2018-04-03 10:52 黑子菜园 阅读(215) 评论(0) 推荐(0)

2018年4月2日

摘要: 1、pom.xml主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素 2、基础设置: <build> <!--指定去掉后缀的工程名字,例如:默认为${artifactId}-${version}--> <f 阅读全文
posted @ 2018-04-02 15:11 黑子菜园 阅读(126) 评论(0) 推荐(0)

2018年3月30日

摘要: openwrt是一套集成在板子上的系统,通过ip进入到其页面上 Luci是lua和UCI统一配置接口的合体,实现路由的网页配置界面(相当于一个前端框架) 阅读全文
posted @ 2018-03-30 10:34 黑子菜园 阅读(213) 评论(0) 推荐(0)

2018年3月29日

摘要: 参考网络资源:https://segmentfault.com/a/1190000012315822 1、active-class是哪个组件的属性? 答:active-class是vue-router模块的router-link组件的属性。router-link支持用户在具有路由功能的应用中导航,默 阅读全文
posted @ 2018-03-29 11:21 黑子菜园 阅读(308) 评论(0) 推荐(0)

2018年3月28日

摘要: 注意:打包之前,需要注意修改一些地方 (1)若是前后端分离开发的,前端开发过程中可能会在api.js中设置访问路径为服务器所在电脑的ip:端口,打包前,最好将它改回localhost:8080 (2)打包后,放到服务器,可能会出现找不到页面js文件的问题,所以预先在webpack.prod.conf 阅读全文
posted @ 2018-03-28 15:33 黑子菜园 阅读(5019) 评论(0) 推荐(0)

2018年3月27日

摘要: Thread类的方法列表:sleep、yield、join用于线程的协作,围绕线程的调度 注意: 只有sleep方法不释放锁,其他都释放锁 1、join()等待线程结束:调用join方法的线程,执行结束后才会释放锁。主线程main中调用启动线程(调用start),然后调用该线程的join方法,可以达 阅读全文
posted @ 2018-03-27 15:59 黑子菜园 阅读(214) 评论(0) 推荐(0)

导航