- Published on
ARTS 第9周
- Authors
- Name
- Jason Yang
- @yangjinlong86
Algorithm
Palindrome Number
package org.nocoder.leetcode.solution;
/**
* 9.Palindrome Number
* <p>
* Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
* <p>
* Example 1:
* <p>
* Input: 121
* Output: true
* Example 2:
* <p>
* Input: -121
* Output: false
* Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
* Example 3:
* <p>
* Input: 10
* Output: false
* Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
* Follow up:
* <p>
* Coud you solve it without converting the integer to a string?
*
* @author jason
* @date 18/9/1.
*/
public class PalindromeNumber {
public static boolean isPalindrome(int x) {
if (x < 0) {
return false;
}
int div = 1;
while (x / div >= 10) {
div *= 10;
}
while (x != 0) {
int left = x / div;
int right = x % 10;
if (left != right) {
return false;
}
x = (x % div) / 10;
div /= 100;
}
return true;
}
public static void main(String [] args){
System.out.println(PalindromeNumber.isPalindrome(121));
System.out.println(PalindromeNumber.isPalindrome(-121));
System.out.println(PalindromeNumber.isPalindrome(10));
}
}
Review
Using Command Pattern in Java
https://medium.com/@p.osinaga/using-command-pattern-in-java-6fd6bb36fd42
命令模式属于行为型模式,将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象。命令模式也可以支持撤销操作。
文中作者用 从 AppleStore 中选购商品为例,演示了命令模式在java中的使用,Store
类来记录购买哪些Product
和然后执行BuyProduct
和SellProduct
命令,相当于把多个命令记录下来,然后顺序执行这些命令,这些命令可以组合、复用。
PS: BuyProduct
类里居然调用的product
的sell()
方法,这个老外太TM不认真了。
Tip
两个小坑
- 一个 vue 项目 执行
npm run dev
提示有几个 modules 和 dependencies 找不到,之前在 windows 下build run 都是没问题的,换了 ubuntu 之后,就运行不起来,检查后发现这几个路径的大小没写对,在 linux 环境下引入 module 和 dependencies 是要区分大小写的。当然这也是开发人员书写不规范问题,引入文件应当与实际文件大小写保持一致才是。
ERROR Failed to compile with 5 errors
These dependencies were not found:
* @/components/login/Login.css in ./src/router/index.js
* @/components/library/LibraryMaintain/LibraryMaintain.vue in ./src/router/index.js
* @/components/webmanagement/details/Details.vue in ./src/router/index.js
To install them, you can run: npm install --save @/components/login/Login.css @/components/library/LibraryMaintain/LibraryMaintain.vue @/components/webmanagement/details/Details.vue
These relative modules were not found:
* ../../common/infoWindowLight.js in ./~/_babel-loader@7.1.5@babel-loader/lib!./~/_vue-loader@13.7.3@vue-loader/lib/selector.js?type=script&index=0!./src/components/common/scatterMap.vue
* ../../common/infoWindow.js in ./~/_babel-loader@7.1.5@babel-loader/lib!./~/_vue-loader@13.7.3@vue-loader/lib/selector.js?type=script&index=0!./src/components/common/scatterMap.vue
2.为一个项目配置了nginx转发,80端口转发到8075端口,直接用ip访问,上传图片大小超过1M就会抛 413 request entity too large
,修改nginx配置文件 client_max_body_size=20M
,默认配置大小为1M,超过就会抛上述异常。
Share
Command Pattern
命令模式,我觉得还是比较好理解的,《大话设计模式》里作者用买烤羊肉串和《Head First 设计模式》的餐厅点餐的例子、遥控器的例子,足以让我们很好的理解这个模式的使用了。例如餐厅里,顾客(Client)创建一个订单,订单里的菜品就是由一个个的命令(Command)组成,交给服务员(Invoker),将订单拿走交给厨师(Receiver),厨师按菜单制做菜品,相当于顺序执行命令。项目中,我们使用Apache Chain,结合责任链和命令模式,来处理队列请求,我们老大很喜欢用这个Chain,放在下次arts的share来写一下Apache Chain以及责任链模式。