Getting Konw the Bitmap of Android

Introduce

Bitmap is used frequently, and too many classes about it to know for us. Now, these classes will be summaried in this article.

Summary about Bitmap of Android

BitmapDrawable is a bitmap package. Directly to the file, that is, an original bitmap package. In Xml mode, the original bitmap can be a series of processing, such as anti-aliasing, stretching, alignment and so on.

To understand the use of BitmapDrawable, but also need to understand Bitmap, BitmapFactory and other categories. Bitmap represents an original bitmap, and can be a series of bitmap transform operation. BitmapFactory provides a set of methods for generating a Bitmap object. Used in the Canvas.

Learn about drawing and bitmap conversion later. BitmapDrawable relatively simple to use, that is, in the other direct reference to the xml file on it, but should pay attention to the definitions in the xml BitmapDrawable the use and meaning of the various properties.

Bitmap, BitmapDrawable, BitmapFactory, BitmapShader

Bitmap

Gets a bitmap from bitmapdrawable

1
2
3
4
5
6
Resources res=getResources();  
Drawable drawable = res.getDrawable(R.drawable.myimage);
//Drawable
BitmapDrawable bitmapDrawable=(BitmapDrawable)drawable;

Bitmap bitmap=bitmapDrawable.getBitmap();

BitmapFactory

The BitmapFactory class provides methods for creating Bitmap objects, which are used to parse and create Bitmap objects from different data sources, as follows:

  1. decodeFile (String pathName); Used to parse from the file specified by the given path to create a Bitmap object

  2. decodeFileDescriptor (FileDescriptor fd); from the FileDescriptor corresponding to the file resolution, create a bitmap object

  3. decodeResource (Resource res, int id); Used to parse the specified resource from the specified resource, creating a bitmap object

  4. decodeStream (InputStream in); Used to parse from the specified input stream, creating a different bitmap object

The first method is the final implementation, the latter two are only the first method of the package.

The second method can be cut from the specified area in the source Bitmap (x, y, width, height) to extract a cut;

The third method is to scale the source Bitmap to a dstWidth x dstHeight Bitmap.

Set the Rotate (via setRotate ()) or Scale (via setScale ()) of the Matrix to pass in the first method to rotate or scale.

1
2
3
4
//example
ImageView imgView = (ImageView)findViewById(R.id.image3);

imgView.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.icon) );

A Bird's View of Netty

Instruction

Netty is a NIO client server framework which enables quick and easy development of network applications such as protocol servers and clients. It greatly simplifies and streamlines network programming such as TCP and UDP socket server.

‘Quick and easy’ doesn’t mean that a resulting application will suffer from a maintainability or a performance issue. Netty has been designed carefully with the experiences earned from the implementation of a lot of protocols such as FTP, SMTP, HTTP, and various binary and text-based legacy protocols. As a result, Netty has succeeded to find a way to achieve ease of development, performance, stability, and flexibility without a compromise.

netty architecture

Features

Design

Unified API for various transport types - blocking and non-blocking socket

Based on a flexible and extensible event model which allows clear separation of concerns

Highly customizable thread model - single thread, one or more thread pools such as SEDA

True connectionless datagram socket support (since 3.1)

Ease of use

Well-documented Javadoc, user guide and examples

No additional dependencies, JDK 5 (Netty 3.x) or 6 (Netty 4.x) is enough

Note: Some components such as HTTP/2 might have more requirements. Please refer to the Requirements page for more information.

Performance

Better throughput, lower latency

Less resource consumption

Minimized unnecessary memory copy

Security

Complete SSL/TLS and StartTLS support

Community

Release early, release often

The author has been writing similar frameworks since 2003 and he still finds your feed back precious!

A Bird's View of Spring Framework

Instruction

Desc of Spring Framework

The Spring Framework is an application framework and inversion of control container for the Java platform. The framework’s core features can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform. Although the framework does not impose any specific programming model, it has become popular in the Java community as an alternative to, replacement for, or even addition to the Enterprise JavaBeans (EJB) model. The Spring Framework is open source.

Modules

The Spring Framework includes several modules that provide a range of services:

  • Spring Core Container: this is the base module of Spring and provides spring containers (BeanFactory and ApplicationContext).
  • Aspect-oriented programming: enables implementing cross-cutting concerns.
  • Authentication and authorization: configurable security processes that support a range of standards, protocols, tools and practices via the Spring Security sub-project (formerly Acegi Security System for Spring).
  • Convention over configuration: a rapid application development solution for Spring-based enterprise applications is offered in the Spring Roo module
  • Data access: working with relational database management systems on the Java platform using JDBC and object-relational mapping tools and with NoSQL databases
  • Inversion of control container: configuration of application components and lifecycle management of Java objects, done mainly via dependency injection
  • Messaging: configurative registration of message listener objects for transparent message-consumption from message queues via JMS, improvement of message sending over standard JMS APIs
  • Model–view–controller: an HTTP- and servlet-based framework providing hooks for extension and customization for web applications and RESTful Web services.
  • Remote access framework: configurative RPC-style marshalling of Java objects over networks supporting RMI, CORBA and HTTP-based protocols including Web services (SOAP)
  • Transaction management: unifies several transaction management APIs and coordinates transactions for Java objects
  • Remote management: configurative exposure and management of Java objects for local or remote configuration via JMX
  • Testing: support classes for writing unit tests and integration tests

Concept

Inversion of control container (dependency injection)

Central to the Spring Framework is its inversion of control (IoC) container, which provides a consistent means of configuring and managing Java objects using reflection. The container is responsible for managing object lifecycles of specific objects: creating these objects, calling their initialization methods, and configuring these objects by wiring them together.

Objects created by the container are also called managed objects or beans. The container can be configured by loading XML files or detecting specific Java annotations on configuration classes. These data sources contain the bean definitions that provide the information required to create the beans.

Objects can be obtained by means of either dependency lookup or dependency injection. Dependency lookup is a pattern where a caller asks the container object for an object with a specific name or of a specific type. Dependency injection is a pattern where the container passes objects by name to other objects, via either constructors, properties, or factory methods.

In many cases one need not use the container when using other parts of the Spring Framework, although using it will likely make an application easier to configure and customize. The Spring container provides a consistent mechanism to configure applications and integrates with almost all Java environments, from small-scale applications to large enterprise applications.

The container can be turned into a partially compliant EJB 3.0 container by means of the Pitchfork project. Some criticize the Spring Framework for not complying with standards. However, SpringSource doesn’t see EJB 3 compliance as a major goal, and claims that the Spring Framework and the container allow for more powerful programming models. You do not create an object, but describe how they should be created, by defining it in the Spring configuration file. You do not call services and components, but tell which services and components must be called, by defining them in the Spring configuration files. This makes the code easy to maintain and easier to test through IoC.

Aspect-oriented programming framework[edit]

The Spring Framework has its own Aspect-oriented programming (AOP) framework that modularizes cross-cutting concerns in aspects. The motivation for creating a separate AOP framework comes from the belief that it would be possible to provide basic AOP features without too much complexity in either design, implementation, or configuration. The Spring AOP framework also takes full advantage of the Spring container.

The Spring AOP framework is proxy pattern-based, and is configured at run time. This removes the need for a compilation step or load-time weaving. On the other hand, interception only allows for public method-execution on existing objects at a join point.

Compared to the AspectJ framework, Spring AOP is less powerful, but also less complicated. Spring 1.2 includes support to configure AspectJ aspects in the container. Spring 2.0 added more integration with AspectJ; for example, the pointcut language is reused and can be mixed with Spring AOP-based aspects. Further, Spring 2.0 added a Spring Aspects library that uses AspectJ to offer common Spring features such as declarative transaction management and dependency injection via AspectJ compile-time or load-time weaving. SpringSource also uses AspectJ AOP in other Spring projects such as Spring Roo and Spring Insight, with Spring Security also offering an AspectJ-based aspect library.

Spring AOP has been designed to make it able to work with cross-cutting concerns inside the Spring Framework. Any object which is created and configured by the container can be enriched using Spring AOP.

The Spring Framework uses Spring AOP internally for transaction management, security, remote access, and JMX.

Then, Some modules used frequently will be instroduced.

Spring Using Reference 1

spring restful

一、使用spring boot测试

#### 1.spring framework 4.1, jackson, tomcat embed,JDK1.7
下载地址:http://repo1.maven.org/maven2/com/fasterxml/jackson/core/
          http://maven.springframework.org/release/org/springframework/spring/
          http://apache.fayea.com/tomcat/tomcat-7/v7.0.63/bin/embed/apache-tomcat-7.0.63-embed.zip
#### 2.常见问题:
- (1)Unregistering JMX-exposed beans on shutdown
    使用tomcat embed
- (2)java.nio.charset.Charset
    使用jdk1.7
- (2)status=406
    使用jackson因为4.1使用这个解析xml
示例程序参见:http://spring.io/guides/gs/rest-service/

Spring IOC

spring ioc原理(看完后大家可以自己写一个spring):http://blog.csdn.net/it_man/article/details/4402245

Spring AOP

设计模式:

- 静态代理:http://blog.csdn.net/lidatgb/article/details/8941711
- 动态代理:http://blog.csdn.net/lidatgb/article/details/8993131

二、Spring、Struts2、Hibernate整合

strut2同样负责的是Action任务,但它的Action经过Spring处理,所以先由Spring生成Action。
Spring生成Action需要数据库支持,Spring将Hibernate作为一个bean将它Model

参考:

常见错误:

Common Exec for Bash Part I

Bash

cd does not work in bash script

The bash script is running in a new process, so you the workdir is not the same with the bash command. There are five solution for this problem as follows:

  1. Symbolic link

Put a symlink in your home to the long path you want to easily access

$ ln -s /home/alex/Documents/A/B/C ~/pathABC
then access the directory with:

$ cd ~/pathABC

  1. Alias

Put an alias in your ~/.bashrc:
alias pathABC=”cd /home/alex/Documents/A/B/C”

  1. Function

Create a function that changes the directory, the function runs in the process of your terminal and can then change its directory.

  1. Avoid running as child

Source your script instead of running it. Sourcing (done by . or source) causes the script to be executed in the same shell instead of running in its own subshell.

$ . ./pathABC

  1. cd-able vars

Set the cdable_vars option in your ~/.bashrc and create an environment variable to the directory:

shopt -s cdable_vars
export pathABC=”/home/alex/Documents/A/B/C”
Then you can use cd pathABC

I use the Alias , the codes in the

as follows:
1
2
3
4
5
6

```shell
alias gd="cd ${devdir}"
alias gw="cd ${workdir}"
alias gp="cd ${prddir}"
alias gt="cd ${devdir}/github/"

Reference

Why doesn’t “cd” work in a bash shell script?

Why doesn’t “cd” work in a shell script?